package com.ruijiang.controller.vm_service;


import com.ruijiang.controller.ApiPrefix;
import com.ruijiang.dto.SkuDto;
import com.ruijiang.dto.page.SkuPageDto;
import com.ruijiang.entity.Sku;
import com.ruijiang.result.PageResult;
import com.ruijiang.service.VmService.SkuService;
import com.ruijiang.utils.AliOssUtil;
import com.ruijiang.vo.sku.SkuTop10VO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;
import java.util.UUID;

@RestController
@RequestMapping(ApiPrefix.VM_SERVICE+"/sku")
@Slf4j
public class SkuController {

    @Autowired
    AliOssUtil aliOssUtil;

    @Autowired
    SkuService skuService;
    /**
     * 头像上传
     *
     * @param fileName
     * @return
     */
    @PostMapping("/fileUpload")
    public String imgFileUpload(MultipartFile fileName) throws IOException {
        String originalFilename = fileName.getOriginalFilename();
        // 生成新的文件名，避免重名
        String newName = UUID.randomUUID().toString() +
                originalFilename.substring(originalFilename.lastIndexOf("."));
        //上传到阿里云
        String path = aliOssUtil.upload(fileName.getBytes(), newName);
        return path;

    }

    /**
     * 获取商品列表
     *
     * @param skuPageDto
     * @return
     */
    @GetMapping("/search")
    public PageResult getSkuList(SkuPageDto skuPageDto) {
        log.info("获取商品列表：{}", skuPageDto);
        PageResult pageResult = skuService.getSkuList(skuPageDto);
        return pageResult;
    }

    /**
     * 修改商品
     * @param skuId
     * @return
     */
    @PutMapping("/{skuId}")
    public Boolean updateSkuById(@PathVariable String skuId, @RequestBody SkuDto skuDto) {
        log.info("修改商品 id= {}=={}", skuId, skuDto);
        skuService.updateSkuById(skuId, skuDto);
        return true;
    }

    /**
     * 添加商品
     * @param skuDto
     * @return
     */
    @PostMapping
    public Boolean insertSku(@RequestBody SkuDto skuDto){
        log.info("添加商品{}",skuDto);
        skuService.insertSku(skuDto);
        return true;
    }


    /**
     * 获取商圈下销量前10的商品(补货推荐)
     * @return
     */
    @GetMapping("/businessTop10/{businessId}")
    public List<SkuTop10VO> getSkuTop10(@PathVariable String businessId){
        log.info("获取销量前10商品 {}",businessId);
        return skuService.getSkuTop10(businessId);
    }


}
